package cn.ydxiaoshaui.aip.imageclassify.bean;

import java.io.Serializable;
import java.util.List;

/**
 * @Description 车辆属性识别
 * @author 小帅丶
 * @className VehicleAttrDetect
 * @Date 2019/9/26-16:54
 **/
public class VehicleAttrDetect implements Serializable {
    private static final long serialVersionUID = 1L;

    /** 唯一的log id，用于问题定位 */
    private Long log_id;
    /** 每个车辆检测框的具体信息 */
    private List<VehicleInfo> vehicle_info;
    /** 检测到的车辆框数目 */
    private Integer vehicle_num;

    private static class VehicleInfo{
        /** 包含所有车辆属性内容 */
        private Attributes attributes;
        /** 检测到的车辆框位置 */
        private Location location;
    }
    private static class Attributes{
        /** 副驾驶位遮阳板是否放下 */
        private Copilot_visor copilot_visor;
        /** 副驾驶是否有人 */
        private Copilot copilot;
        /** 副驾驶位是否系安全带 */
        private Copilot_belt copilot_belt;
        /** 车辆类型 */
        private Vehicle_type vehicle_type;
        /** 是否有天窗 */
        private Skylight skylight;
        /** 驾驶位遮阳板是否放下 */
        private Driver_visor driver_visor;
        /** 是否有后视镜悬挂物 */
        private Rearview_item rearview_item;
        /** 是否有车内摆放物 */
        private In_car_item in_car_item;
        /** 是否有车窗雨眉 */
        private Window_rain_eyebrow window_rain_eyebrow;
        /** 车辆朝向 */
        private Direction direction;
        /** 是否有车顶架 */
        private Roof_rack roof_rack;
        /** 驾驶位是否系安全带 */
        private Driver_belt driver_belt;
    }
    private static class Copilot_visor{
        /** 对应概率分数，分数越大代表属性的正向取值可能性越大，实际应用中可根据测试情况选取合适的score阈值，推荐阈值0.1 */
        private Double score;
    }
    private static class Copilot{
        /** 对应概率分数，分数越大代表属性的正向取值可能性越大，实际应用中可根据测试情况选取合适的score阈值，推荐阈值0.55 */
        private Double score;
    }
    private static class Copilot_belt{
        /** 对应概率分数，分数越大代表属性的正向取值可能性越大，实际应用中可根据测试情况选取合适的score阈值，推荐阈值0.85 */
        private Double score;
    }
    private static class Vehicle_type{
        /** 对应概率分数，分数越大代表属性的正向取值可能性越大，实际应用中可根据测试情况选取合适的score阈值 */
        private Double score;
        /** 车辆类型 */
        private String name;
    }
    private static class Skylight{
        /** 对应概率分数，分数越大代表属性的正向取值可能性越大，实际应用中可根据测试情况选取合适的score阈值，推荐阈值0.5 */
        private Double score;
    }
    private static class Driver_visor{
        /** 对应概率分数，分数越大代表属性的正向取值可能性越大，实际应用中可根据测试情况选取合适的score阈值，推荐阈值0.2 */
        private Double score;
    }
    private static class Rearview_item{
        /** 对应概率分数，分数越大代表属性的正向取值可能性越大，实际应用中可根据测试情况选取合适的score阈值，推荐阈值0.4 */
        private Double score;
    }
    private static class In_car_item{
        /** 对应概率分数，分数越大代表属性的正向取值可能性越大，实际应用中可根据测试情况选取合适的score阈值，推荐阈值0.35 */
        private Double score;
    }
    private static class Window_rain_eyebrow{
        /** 对应概率分数，分数越大代表属性的正向取值可能性越大（即有车窗雨眉），实际应用中可根据测试情况选取合适的score阈值，推荐阈值0.02 */
        private Double score;
    }
    private static class Direction{
        /** 对应概率分数，分数越大代表属性的正向取值可能性越大，实际应用中可根据测试情况选取合适的score阈值 */
        private Double score;
        /** 车辆朝向 */
        private String name;
    }
    private static class Roof_rack{
        /** 对应概率分数，分数越大代表属性的正向取值可能性越大，实际应用中可根据测试情况选取合适的score阈值，推荐阈值0.01 */
        private Double score;
    }
    private static class Driver_belt{
        /** 对应概率分数，分数越大代表属性的正向取值可能性越大，实际应用中可根据测试情况选取合适的score阈值，推荐阈值0.75 */
        private Double score;
    }

    private static class Location{
        /** 检测框顶坐标 */
        private Integer top;
        /** 检测框左坐标 */
        private Integer left;
        /** 检测框宽度 */
        private Integer width;
        /** 检测框高度 */
        private Integer height;
    }
}
